From: kfraser@localhost.localdomain Date: Mon, 6 Nov 2006 15:46:28 +0000 (+0000) Subject: [HVM] Initialise AP TSC to same as BP TSC. X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=c31f8336e64eb81a83194946dbb4f28d1a4e7137;p=xen.git [HVM] Initialise AP TSC to same as BP TSC. Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index e785d31882..6bc9881165 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -69,9 +69,9 @@ void hvm_stts(struct vcpu *v) void hvm_set_guest_time(struct vcpu *v, u64 gtime) { u64 host_tsc; - + rdtscll(host_tsc); - + v->arch.hvm_vcpu.cache_tsc_offset = gtime - host_tsc; hvm_funcs.set_tsc_offset(v, v->arch.hvm_vcpu.cache_tsc_offset); } @@ -541,6 +541,11 @@ int hvm_bringup_ap(int vcpuid, int trampoline_vector) hvm_init_ap_context(ctxt, vcpuid, trampoline_vector); + /* Sync AP's TSC with BSP's. */ + v->arch.hvm_vcpu.cache_tsc_offset = + v->domain->vcpu[0]->arch.hvm_vcpu.cache_tsc_offset; + hvm_funcs.set_tsc_offset(v, v->arch.hvm_vcpu.cache_tsc_offset); + LOCK_BIGLOCK(d); rc = -EEXIST; if ( !test_bit(_VCPUF_initialised, &v->vcpu_flags) ) diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index e5ebec095e..9c4e8defb3 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -285,19 +285,6 @@ static void vmx_set_host_env(struct vcpu *v) error |= __vmwrite(HOST_RSP, (unsigned long)get_stack_bottom()); } -#if 0 -static void vmx_do_launch(struct vcpu *v) -{ - if ( v->vcpu_id != 0 ) - { - /* Sync AP's TSC with BSP's */ - v->arch.hvm_vcpu.cache_tsc_offset = - v->domain->vcpu[0]->arch.hvm_vcpu.cache_tsc_offset; - hvm_funcs.set_tsc_offset(v, v->arch.hvm_vcpu.cache_tsc_offset); - } -} -#endif - static int construct_vmcs(struct vcpu *v) { int error = 0;